<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // var num = 1;
    // function demo() {
    //     // 该作用域中有var 所以会被预处理声明放到作用域最前面执行，赋值操作不会，所以是声明未定义输出：undefined
    //     console.log(num);
    //     function demoSon() {
    //         // 该局部作用域中没有声明：var所以想上一级寻找，函数调用时在var num = 2下面num已经被赋值了2所以输出2
    //         console.log(num);
    //         num = 3;
    //         // 此时num重新被赋值3，所以输出3
    //         console.log(num);
    //     }
    //     var num = 2
    //     demoSon();
    // }
    // demo();


var num
function demo() {
        // 该作用域中有var 所以会被预处理声明放到作用域最前面执行，赋值操作不会，所以是声明未定义输出：undefined
        
        function demoSon() {
            // 该局部作用域中没有声明：var所以想上一级寻找，函数调用时在var num = 2下面num已经被赋值了2所以输出2
            console.log(num);
            num = 3;
            // 此时num重新被赋值3，所以输出3
            console.log(num);
        }
        var num
        console.log(num);
        // 1
        num = 2
        demoSon();
    }
num=1
demo()





</script>

</html>